import axios from '@ohos/axios'
import { promptAction } from '@kit.ArkUI'
import type { AnyObject } from './httpType'

const request = axios.create({
  baseURL: '192.168.253.126:6060',
  timeout: 5000
})
//请求拦截器
request.interceptors.request.use(
  (config) => {
    //未来需要添加拦截器
    //拿到持久化存储的数据
    // const token = AppStorage.get<string>('token')
    // console.log('token1',token)
    // if(token){
    //   config.headers.token = token
    // }
    return config
  }
)

//响应拦截器
request.interceptors.response.use(
  (response) => {
    if (response.data.code == 200) {
      return response.data.data
    } else {
      promptAction.showToast(response.data.message)
      return Promise.reject(response.data.message)
    }
  },
  (error) => {
    //错误提示
    promptAction.showToast(error.message)
    return Promise.reject(error.message)
  }
)

export default class Http {
  get<T>(url: string, params?: AnyObject) {
    //此处的第一个泛型指的是请求体的类型，第二个泛型为响应数据类型的参数
    return request.get<any, T>(url, { params })
  }

  post<T>(url: string, data?: AnyObject) {
    //此处的第一个泛型指的是请求体的类型，第二个泛型为响应数据类型的参数
    return request.post<any, T>(url, data)
  }

  put<T>(url: string, data?: AnyObject) {
    //此处的第一个泛型指的是请求体的类型，第二个泛型为响应数据类型的参数
    return request.put<any, T>(url, data)
  }

  delete<T>(url: string, params?: AnyObject) {
    //此处的第一个泛型指的是请求体的类型，第二个泛型为响应数据类型的参数
    return request.delete<any, T>(url, { params })
  }
}